package com.canyou.basic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.canyou.basic.entity.sms.SmsSendVO;
import com.canyou.basic.model.SmsSend;

import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author canyou
 * @since 2020-06-28
 */
public interface SmsSendService extends IService<SmsSend> {

    /**
     * 发送短信基础服务方法, 里面记录发送记录到数据库
     *
     * @param smsType         短信类型(1: 验证码类型, 2: 通知类型)
     * @param smsTemplateCode 短信模板code
     * @param phoneNumber     接收短信手机号
     * @param para            模板参数
     * @return
     */
    boolean sendSms(Integer smsType, String smsTemplateCode, String phoneNumber, Map<String, String> para);

    /**
     * 同步短信发送回执
     *
     * @param smsSend
     * @return
     */
    Boolean syncSmsSendReceipt(final SmsSend smsSend);

    /**
     * 分页获取短信列表
     *
     * @param page      分页信息
     * @param condition 查询条件(手机号/发送内容)
     * @return
     */
    IPage<SmsSendVO> getPageList(IPage<SmsSendVO> page, String condition);

    /**
     * 短信发送失败记录重发
     *
     * @param smsSendRecord 短信发送失败记录
     * @return
     */
    boolean reSendSms(SmsSend smsSendRecord);

    /**
     * 发送登录验证码
     *
     * @param phoneNumber 手机号
     * @param code        登录验证码
     * @return
     */
    boolean sendLoginCode(String phoneNumber, String code);

}
